package com.elitel.frame.business.service;

import com.elitel.frame.main.entity.CfgDb;
import com.elitel.frame.main.entity.CfgEdit;
import com.elitel.frame.main.entity.vo.ValidationInfoVo;

import java.util.List;
import java.util.Map;

/**
 * @Description 单边编辑服务接口
 *
 * @author guoyanfei
 * @date 2018/01/08
 */
public interface SingleEditService {
  /**
   * @Description 单表新增接口
   *
   * @param cfgEdit 实体
   * @param cfgDb 实体
   * @param conQuery 新增值
   * @return ValidationInfoVo实体
   * @author guoyanfei
   * @date 2018/01/08
   */
  ValidationInfoVo addInfo(CfgEdit cfgEdit, CfgDb cfgDb, String conQuery);

  /**
   * @Description 单表修改接口
   *
   * @param cfgEdit 实体
   * @param cfgDb 实体
   * @param conQuery 修改值
   * @return ValidationInfoVo实体
   * @author guoyanfei
   * @date 2018/01/08
   */
  ValidationInfoVo updateInfo(CfgEdit cfgEdit, CfgDb cfgDb, String conQuery);

  /**
   * @Description 单表删除接口
   *
   * @param cfgEdit实体
   * @param cfgdb实体
   * @param primaryKeys(主键值,多个值以','分割)
   * @return ValidationInfoVo实体
   * @author guoyanfei
   * @date 2018/01/08
   */
  ValidationInfoVo delInfo(CfgEdit cfgEdit, CfgDb cfgdb, String primaryKeys);

  /**
   * @Description 查询单表所有数据
   *
   * @param cfgEdit实体
   * @param cfgDb 数据源
   * @return List数据集合
   * @author guoyanfei
   * @date 2018/01/19
   */
  List<Map<String, Object>> getAllData(CfgEdit cfgEdit, CfgDb cfgDb);

  /**
   * show 单表批量导入数据
   *
   * @param cfgEdit 单表编辑服务实体
   * @param cfgDb 数据源实体
   * @param mapList 需导入的数据集合
   * @param flag 0错误就停止导入，1错误继续导入
   * @return ValidationInfoVo实体
   * @date 2018/01/23
   */
  ValidationInfoVo importData(
      CfgEdit cfgEdit, CfgDb cfgDb, List<Map<String, Object>> mapList, Integer flag);

  /**
   * show 单表编辑查询主键字段 create by guoyanfei on 2018/10/08
   *
   * @param cfgEdit 单表编辑服务实体
   * @param cfgDb 数据源实体
   * @return 主键串
   */
  String getPrimaryKey(CfgEdit cfgEdit, CfgDb cfgDb);

  /**
   * 通过主键查询数据 create by guoyanfei on 2019/07/20
   *
   * @param cfgEdit 编辑服务实体
   * @param cfgDb 数据源
   * @param conQuery 查询条件
   * @return
   */
  List<Map<String, Object>> getDataPrimarykey(CfgEdit cfgEdit, CfgDb cfgDb, String conQuery);

  ValidationInfoVo batchImportData(List<Map<String, Object>> validationData, CfgEdit cfgEdit, CfgDb cfgDb);
}
